fix(event_handler): return 415 status_code for unsupported content-type headers#7980
Conversation
…return a 415 response
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #7980 +/- ##
========================================
Coverage 96.73% 96.73%
========================================
Files 278 278
Lines 13646 13654 +8
Branches 1084 1086 +2
========================================
+ Hits 13200 13208 +8
Misses 327 327
Partials 119 119 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
leandrodamascena
left a comment
There was a problem hiding this comment.
Thanks for the PR! I think returning 415 is the correct behavior for unsupported content types - the previous 500 was an intentional design decision at the time, but this is a better approach. For most customers this won't break anything. However, anyone asserting status_code == 500 in their tests for this specific scenario, or monitoring/alerting on 500s from unsupported content types, will see a change in behavior. We'll keep an eye on customer feedback and revert if needed.
I left a minor suggestion on the exception hierarchy - I'll merge once you've had a chance to review it.
leandrodamascena
left a comment
There was a problem hiding this comment.
Thanks for the PR! I think returning 415 is the correct behavior for unsupported content types - the previous 500 was an intentional design decision at the time, but this is a better approach. For most customers this won't break anything. However, anyone asserting status_code == 500 in their tests for this specific scenario, or monitoring/alerting on 500s from unsupported content types, will see a change in behavior. We'll keep an eye on customer feedback and revert if needed.
I left a minor suggestion on the exception hierarchy - I'll merge once you've had a chance to review it.
…ub.com:chriselion/powertools-lambda-python into celion/return-415-for-unsupported-content-type
|
Mypy is reporting an error that is unrelated to this PR. Let me check it. |
|
leandrodamascena
left a comment
There was a problem hiding this comment.
Thanks for addressing the feedback @chriselion! APPROVED!



Issue number: closes #7978
Summary
For handlers with a body parameter, previously we would raise an uncaught NotImplementedError, which results in a 500 response.
Now, raise a new subclass of
NotImplementedError(to maintain existing behavior), and handle the new exception and return a 415 (Unsupported Media Type) response.Changes
RequestUnsupportedContentTypeRequestUnsupportedContentTypewhen trying to parse the request body but the content-type header isn't one of the known ones.User experience
Previously, requests for some endpoints would receive a 500 response if they passed unexpected headers.
Now, they will receive a 415 response, which is more indicative of a client error.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
Disclaimer: We value your time and bandwidth. As such, any pull requests created on non-triaged issues might not be successful.